1. The Field of the Invention
The present invention relates to methods and apparatus for processing incoming video streams, and more particularly, to methods and apparatus for managing error information generated during demultiplexing processing operations.
2. Background and Related Art
Recent advances in the field of digital video have enhanced capabilities related to the remote access of video programming. Digital video programming is relayed to users via video transport streams. To create a transport stream, multiple digital video programs are encoded in a digital video format and multiplexed into a single transport stream. The stream is then received by a user system. By demultiplexing and decoding the video data in the transport stream, user systems are able to configure and display digital video programming to users.
When a transport stream is received into a user system, a transport stream processor acquires video program data from the incoming transport stream. The video program data is processed by the transport stream processor and sent to a system processor to be configured into a video program for display on a television or another display device.
One of the complexities of processing digital video data is dealing with error or status information that must be utilized by the system processor to configure the data into displayable video programming. Error or status information refers not only to error condition information, but also other types of exception information monitored during demultiplexing. This exception information is referred to hereinafter as error/status information. The error/status information informs the system processor of specialized handling related to processed video data. Examples of error/status information include, buffer management information, picture header address information, packet acquisition information, demultiplexing processing information, memory handling information, continuity counter error information, and program clock reference error information.
Error/status data is generated by the transport stream processor during the acquisition, processing, and memory handling of incoming video data. Incoming video data is delivered to a transport stream processor by a transport stream in a series of data packets. The exact configurations of the data packets are defined by the digital video format used to encode the video programming. Two of the most common formats are digital video broadcasting (DVB), which is based on the Moving Pictures Expert Group-2 (MPEG-2) standard, and digital satellite system (DSS) developed by DIRECTV. DVB has 188-byte packets while DSS has 130-byte packets. The packets of the transport stream include a payload in which the digital video data is encoded and a header that includes an identifier so that the transport stream processor can select packets that correspond to a desired program. In DVB, the identifier is called a packet identifier (PID), while in DSS, the identifier is called a service channel identifier (SCID). Each PID/SCID operates to identify packets of the given type.
There can be approximately 20 to 40 different PIDS/SCIDS within a transport stream, which typically includes multiple programs, each being represented by one or more PIDS/SCIDS. For example, a program may have one PID representing all audio packets, a different PID representing all video packets, and another PID representing packets containing processing information. Transport processing includes demultiplexing the packets so as to obtain the packets associated with a desired program and assembling the packets in such a way that a video decompressor can configure the data into a digital video program.
During the acquisition and processing of data packets, the transport stream processor generates error/status information related to the acquisition, processing, and memory handling of the data packets. The exact nature of the error/status information generated by the transport stream processor is defined by the digital video format used. Error/status information may be generated for any type of information that the system wants to obtain from the incoming transport stream.
FIG. 1 illustrates a conventional transport stream processor 10 in which error information is generated. The transport stream processor includes a PID filter 22, a descrambler 24, a processor 26, memory (code space ROM/RAM) 28, and a direct memory access (DMA) engine 30. Also illustrated are a transport source 20, a first video stream buffer 34, a second video stream buffer 36, and a host communication 38.
Data packets in the transport stream are sent to transport stream processor 10 from transport source 20 through PID filter 22. Transport source 20 can be any of a variety of sources for video streams, including but not limited to, a digital satellite system, digital cable, or other sources for incoming video streams. PID filter 22 identifies data packets in the incoming video stream having PEDs/SCIDs associated with the video program to be acquired. Processor 26 programs PID filter 22 to dilineate PIDs/SCIDs to be acquired. Utilizing the parameters set by processor 26, PID filter 22 acquires the data packets having the desired packet information. Once the packets are acquired they are sent to descrambler 24. Descrambler 24 performs descrambling operations on the acquired data packets where descrambling operations are required for the processing of the data packets. As with PID filter 22, processor 26 informs the descrambling operations to be performed by descrambler 24.
Once the packets have been acquired and optionally descrambled, they are sent to processor 26. Processor 26 includes a demultiplexing processor. The demultiplexing processor performs processing operations on the acquired data packets, such as removing unneeded header information, to prepare the data to be displayed as video programming. The demultiplexing processor also identifies error/status conditions encountered in the processing of the data packets. Error/status information is generated in response to a condition associated with the data processing that causes an exception or interrupt to be asserted. For example, where the transport stream processor 10 encounters an error during PID filtering, descrambling, or other demultiplexing processing operations, the processor generates error information so the system processor can properly process data packets causing such error conditions.
Once the error/status information has been generated by processor 26, the information is sent to transport processor memory 28 for storage. Transport processor memory 28 typically comprises nonvolatile memory such as ROM. As previously mentioned, one function of the transport processor memory 28 is to provide code space for instructions defining demultiplexing processing operations to be performed by processor 10. Transport processor memory 28 also functions as the memory receptacle for all error/status information.
Once the incoming data packets have been filtered, descrambled, and processed, they are transported to DMA engine 30. Because packets in the transport stream are not necessarily sequentially ordered, DMA engine 30 transmits packets into list 32 contained in transport processor memory 28. List 32 allows the packets to be sequenced appropriately for video decoding and image rendering operations performed in preparation for displaying the video data to the viewer. Once the packets have been arranged sequentially, they are then sent as DMA out to system buffers 34 and 36.
System buffers contain a finite amount of memory space. Accordingly, once a buffer is filled with the requisite amount of data, it can accept no additional data. To ensure that processed digital video data is sent to system memory in a continuous fashion, DMA engine 30 employs system buffers adapted to handle the continuous relay of data packets. For example, in the illustrated embodiment two ping pong buffers are utilized, first video stream buffer 34 and second video stream buffer 36. Initially, DMA engine 30 designates the first video stream buffer 34 as “current” And the second video stream buffer 36 as “next.” DMA engine 30 sends processed data packets and the associated video data to first video stream buffer 34, as it is currently designated as the “current” buffer. As the current buffer is filled, DMA engine 30 the first video stream buffer 34 and second video stream buffer 36 are alternatively designated as the current and next buffer. The buffers receive the processed data packets and the associated video data, thereby enabling the DMA engine to transmit the processed data packets in a continuous fashion.
Processed video data from the processed data packets held in “current” and “next” video stream buffers are then accessed by a system processor (not shown). The system processor reconfigures the processed video data into digital video programming that can be decoded and displayed on a display device. As the system processor accesses and reconfigures the video data from the processed data packets, the processor simultaneously accesses error/status information from the transport stream processor memory 28 to inform the reconfiguration and decoding operations. For example, if the video data of a given data packet requires specialized handling, the error/status information informs the system processor of the need for such specialized handling. Additional detail regarding error/status information and its role in transport processing is described hereinafter.
One of the limitations of the management of error/status information relates to the fact that the system processor must access the error information from transport stream processor memory 28. The error information is accessed through host communication 38. While video data associated with the processed data packets is accessed by the system processor at extremely high rates (i.e. microseconds), the system processor requires substantially more time to access error/status information from the transport stream processor memory 28 (i.e. milliseconds). The time differential limits the ability of the system processor to efficiently utilize error/status information in the reconfiguration of the video data associated with processed data packets. These limitations become more pronounced where burdens on the system processor are the greatest. For example, during the fast-forward and rewind functionality provided by many digital video formats, the system processor must quickly and efficiently access error/status information. Where the system processor is required to receive and decode multiple video programs, the burdens placed on the system processor are similarly pronounced.
In view of the above, it is apparent that there is a need for new and improved methods and apparatus for managing error information generated during the processing of video transport stream data. It is desirable that the methods increase the efficiency with which system processor may access and utilize such error information.